package com.jsb.laundry.dao;

import com.jsb.laundry.model.dto.CouponRecordDto;
import com.jsb.laundry.model.dto.Promotion;
import com.jsb.laundry.model.entity.CouponUserBag;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface CouponDao {

    /**
     * 获取优惠券套餐
     * @return
     */
    List<CouponRecordDto> vipCenterPage();
    /**
     * 查询当前(可以看见当前月可用)可用优惠券列表
     * @return
     */
    List<CouponUserBag> findCurrentMonthCoupon(@Param("userId") String userId, @Param("useType") String useType, @Param("currentTime") Date currentTime);

    /**
     * 获取待领取优惠券
     * @param userId
     * @return
     */
    List<CouponUserBag> findCurrentPreReceiveCoupon(String userId);

    /**
     * 查询所有优惠券列表(系统赠送和领取除外 只是购买获得的)
     * @param userId
     * @param useType
     * @return
     */
    List<CouponUserBag> getAvailableCouponInfo(@Param("userId") String userId,@Param("useType") String useType);

    /**
     * 获取套餐价格和openid
     * @param userId
     * @param tcId
     * @return
     */
    CouponUserBag getCouponPackagePriceAndOpenId(String userId, String tcId);

    /**
     * 查询套餐下的优惠券
     * @param tcId
     * @return
     */
    List<CouponUserBag> findCouponPackageList(String tcId);

    /**
     *购买优惠券预下单(一年)数据入库背包
     * @param list
     * @return
     */
    int couponPreBuy(@Param("list") List<CouponUserBag> list);

    /**
     * 用户购买的优惠券
     * @param userId
     * @param tcId
     * @param couponPayID
     * @return
     */
    int addCouponUserBuy(@Param("userId")String userId,@Param("tcId") String tcId,@Param("payId") String couponPayID);

    /**
     * 支付成功更新优惠券购买状态
     * @param userId
     * @param payId
     * @return
     */
    int updCouponRecord(@Param("userId") String userId,@Param("payId") String payId);

    /**
     * 用户购买的优惠券支付成功后更改状态
     * @param userId
     * @param payID
     * @return
     */
    int updCouponUserBuy(@Param("userId")String userId,@Param("payId") String payID);

    /**
     * 查看用户购买的套餐
     * @param orderId
     * @return
     */
    String getUserBuyCouponTc(String orderId);


    /**
     * 获取邀请人id
     * @return
     */
    Promotion getPromotion(String userId);

    /**
     * 购买的是套餐1,给用户账号余额 user_amount_details表 user_other_money=600元
     *
     * @param userId
     * @param userOtherMoney
     * @return
     */
    int updUserAccountOtherMoney( @Param("userId")String userId,  @Param("userOtherMoney")int userOtherMoney);

    /**
     * 再次邀请人
     * @param userId
     * @return
     */
    int updUserAccountInfo(@Param("userId")String userId,@Param("bonus") int currentBonus);

    /**
     * 添加流水记录(收益、提现)
     * @param userId
     * @param currentMoney
     * @return
     */
    int addUserStreamRecord(@Param("streamId") String streamId,@Param("userId") String userId,@Param("currentMoney") int currentMoney);

    /**
     * 改变promotion状态为给过
     * @param promotionId
     * @return
     */
    int updPromotion(Promotion promotionId);

    HashMap getUserBalanceAndCoupon(String userId);

    String findByC(String userId);

    int getUserCouponBuyEffective(String userId);

    List<HashMap> monthCardList(@Param("userId") String userId, @Param("status") String status);

    HashMap accountBalancePage(String userId);

    int updCapitalAccount(@Param("userId")String userId, @Param("money")int userOtherMoney);

    String findByUserPhone(String userId);

    int addcouponUserBag(@Param("userId") String userId,@Param("payId")  String payId, @Param("beginTime") String toStringData,@Param("endTime")  String oneMonthLaterStr);

    int findByCoupon(String userId);
}
